An enterprise database system stores vast amounts of data received from one or more different sources. The data is stored in database tables and may be accessed and modified via structured queries. The database tables may be partitioned, and many database systems support the distribution of table partitions across multiple hosts in order to improve, for example, scalability and availability.
The distribution of table partitions across hosts is typically determined by a plan generation algorithm. The plan generation algorithm may take into account different properties of the landscape and data access needs. Conventional plan generation algorithms are provided by a database system developer and are not capable of the flexibility required to account for the multitude of possible considerations and their relative importance to various users.